package br.com.edumobi.fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;

import java.util.List;

import br.com.edumobi.R;
import br.com.edumobi.adapters.ListaClassificacoesAdapter;
import br.com.edumobi.dados.modelos.Classificacao;
import br.com.edumobi.dados.modelos.Questao;

public class ClassificacoesFragment extends GenericoFragment {

    private ListView listViewClassificacoesFragment;

    private AcoesClassificacoesFragment activity;

    private List<Classificacao> classificacoes;

    private AdapterView.OnItemClickListener clickListViewClassificacoesFragment = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Classificacao classificacao = classificacoes.get(position);

            if (!activity.obterClassificacoesPorClassificacaoSuperior(classificacao).isEmpty()) {
                activity.abrirClassificacoesInferiores(classificacao);
            } else if (!activity.obterQuestoesPorClassificacao(classificacao).isEmpty()) {
                activity.abrirQuestoes(classificacao);
            } else {
                activity.exibirTexto(R.string.sem_mais_conteudo);
            }
        }
    };

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        activity = (AcoesClassificacoesFragment) getActivity();

        carregarListViewClassificacoes();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_classificacoes, container, false);

        listViewClassificacoesFragment = (ListView) view.findViewById(R.id.listViewClassificacoesFragment);

        listViewClassificacoesFragment.setOnItemClickListener(clickListViewClassificacoesFragment);

        return view;
    }

    @Override
    public void exibirComponentes() {
        listViewClassificacoesFragment.setVisibility(View.VISIBLE);
    }

    @Override
    public void esconderComponentes() {
        listViewClassificacoesFragment.setVisibility(View.GONE);
    }

    private void carregarListViewClassificacoes() {
        classificacoes = activity.obterClassificacoesPorClassificacaoSuperior(activity.obterClassificacaoSuperior());
        listViewClassificacoesFragment.setAdapter(new ListaClassificacoesAdapter(classificacoes));
    }

    public interface AcoesClassificacoesFragment extends AcoesGenericoFragment {
        List<Classificacao> obterClassificacoesPorClassificacaoSuperior(Classificacao classificacaoSuperior);
        List<Questao> obterQuestoesPorClassificacao(Classificacao classificacao);
        Classificacao obterClassificacaoSuperior();
        void abrirClassificacoesInferiores(Classificacao classificacaoSuperior);
        void abrirQuestoes(Classificacao classificacao);
    }
}